"""
编程设计一个基类汽车类 Vehicle，包含最大速度 MaxSpeed，weight 两个实例私
有属性；设计一个派生子类自行车（Bicycle）类，增加 1 个实例私有属性高度（height） 和 1 个成员函数 SetMaxSpeed 实现给父类的实例属性 MaxSpeed 的赋值。
要求：
1) 根据以上描述设计类，并在主函数中创建子类的实例化对象，并设置对象的
MaxSpeed 值。
2) 利用 property 将 height 设定为可读、可修改的属性。
"""
class Vehicle:
    def __init__(self,MaxSpeed,weight):
        self.__MaxSpeed = MaxSpeed
        self.__weight = weight
class Bicycle(Vehicle):
    def __init__(self, MaxSpeed, weight, height):
        # 注意不是  super.__init__(MaxSpeed,weight)
        super().__init__(MaxSpeed, weight)
        self.__height = height
    def SetMaxSpeed(self,speed):
        Vehicle.MaxSpeed = speed

    def __get(self):
        return self.__height

    def __set(self, h):
        self.__height = h

    def __del(self):
        del self.__height

    # property() 函数的作用是在新式类中返回属性值。
    """
    property([fget[, fset[, fdel[, doc]]]])
    fget -- 获取属性值的函数
    fset -- 设置属性值的函数
    fdel -- 删除属性值函数
    doc -- 属性描述信息
    x = property(getx, setx, delx, "I'm the 'x' property.")
    如果 c 是 C 的实例化, c.x 将触发 getter,c.x = value 将触发 setter ， del c.x 触发 deleter。
    """
    height = property(__get, __set, __del)

    def show(self):
        print(self.__height)

bicycle = Bicycle(4,0,7)
bicycle.SetMaxSpeed(40)
bicycle.show()
bicycle.height=1
bicycle.show()